package com.ruben.simplescaffold.manager;

import com.alibaba.fastjson.TypeReference;
import com.ruben.simplescaffold.utils.ISupplier;

/**
 * redis管理层
 *
 * @author <achao1441470436@gmail.com>
 */
public interface RedisManager {

    /**
     * redis缓存处理查询内容，处理缓存雪崩
     *
     * @param key           redis中的key
     * @param mysqlSupplier 查询数据库操作
     * @param typeReference 指定类型
     * @return T
     * @author <achao1441470436@gmail.com>
     * @since 2021/5/9 0009 20:33
     */
    <T> T getFromRedisOrPutIntoMysql(String key, ISupplier<T> mysqlSupplier, TypeReference<T> typeReference);
}
